using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.Caching;
using Anthem;
using Common;
using eWorld.UI;
using System.Web.UI;
using MinCultura.Sinic.Basicas;
using MinCultura.Sinic.WebUserControls;
using MinCultura.Sipa.DataAccess.AgentesArtes;
using MinCultura.Sipa.AgentesArtes;
using UsrControls;
using BusinessRules;
using CustomValidator = Anthem.CustomValidator;

namespace web.Controls
{
    /// <summary>
    /// Summary description for AgentesBasicos.
    /// </summary>
    public class AgentesBasicos : SinicUserControl
    {
        #region - Controles

        protected System.Web.UI.WebControls.Label lblAGE_PERTENECE_MINORIA_ETNICA;
        protected TextBoxBase txtAGE_OTRA_DISCAPACIDAD_FISICA;
        protected Label lblAGE_OTRA_DISCAPACIDAD_FISICA;
        protected System.Web.UI.WebControls.Label lblAGE_POSEE_DICAPACIDA_FISICA;
        protected Label lblAGE_ANO_EXPEDICION_TARJETA;
        protected TextBoxBase txtAGE_NUMERO_TARJETA;
        protected TextBoxBase txtAGE_LUGAR_EXPEDICION_DOCUMENTO;
        protected Label lblDOC_ID;
        protected TextBoxBase txtAGE_OTRA_CIUDAD_NACIMIENTO;
        protected Label lblZOP_ID;
        protected Label Label1_4;
        protected DropDownList cboGENERO;
        protected TextBoxBase txtAGE_SEUDONIMO;
        protected Anthem.RequiredFieldValidator reqAGE_NOMBRES_APELLIDOS;
        protected TextBoxBase txtAGE_NOMBRES_APELLIDOS;
        protected web.Controls.Fechas cldFECHA_NACIMIENTO;
        protected Label lblAGE_NUMERO_TARJETA;
        public DropDownList ddlTipoDocumento;
        protected TextBoxBase txtAGE_NUMERO_DOCUMENTO;
        protected Label lbFechaRegistro;
        protected Label lblAGE_OTRA_CIUDAD_NACIMIENTO;
        protected Label lblSUBTITULO1;
        protected Label lbPasaporteTiene;
        protected Label lbPasaporteNumero;
        protected Label lbPasaporteExpedicion;
        protected Label lbPasaporteVencimiento;
        protected TextBoxBase txtPasaporteNumero;
        protected web.Controls.Fechas clPasaporteExpedicion;
        protected web.Controls.Fechas clPasaporteVencimiento;
        protected RadioButtonList rbPasaporte;
        protected RadioButtonList opcAGE_TIENE_TARJETA_PROFECIONAL;
        protected DropDownList dplMET_ID;
        protected RadioButtonList opcAGE_POSEE_DICAPACIDA_FISICA;
        protected RadioButtonList opcAGE_PERTENECE_MINORIA_ETNICA;
        protected TextBoxBase txtAGE_ANO_EXPEDICION_TARJETA;
        protected Label lblMET_ID;
        protected Label lblAGE_OTRA_MINORIA;
        protected TextBoxBase txtAGE_OTRA_MINORIA;
        protected DropDownBase ddlPaisBasicos;
        protected CustomValidator customValTarjetaPro;
        protected CustomValidator customValTarjetaProAnio;
        protected CustomValidator CustomValNumPasaporte;
        protected CustomValidator CustomValOtraDiscapacidad;
        protected CustomValidator CustomValMinoria;
        protected CustomValidator Customvalidator1;
        protected CustomValidator CustomValFe1Pasaporte;
        protected CustomValidator CustomValFe2Pasaporte;
        protected CustomValidator CustomValCiudadNac;
        protected Anthem.RequiredFieldValidator reqLugarExpedicionDocumento;
        protected wucZonasGeograficas zgBasicos;

        #endregion

        #region - Eventos

        private void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Manager.Register(this);
                Manager.Register(zgBasicos);
                //cldFECHA_NACIMIENTO.CargarControles();
                //clPasaporteExpedicion.CargarControles();
                //clPasaporteVencimiento.CargarControles();
                if (Identificador == 0)
                {
                    CargaDatos();
                    string hora = DateTime.Now.ToShortTimeString();
                    string fecha = DateTime.Now.ToShortDateString() + " " + hora;
                    lbFechaRegistro.Text = fecha;
                }
                else
                {
                    txtAGE_NUMERO_DOCUMENTO.Enabled = false;
                    ddlTipoDocumento.Enabled = false;
                }

                reqAGE_NOMBRES_APELLIDOS.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtAGE_NOMBRES_APELLIDOS.ToolTip);
                CustomValCiudadNac.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtAGE_OTRA_CIUDAD_NACIMIENTO.ToolTip);
                reqLugarExpedicionDocumento.ErrorMessage = Utilidad.TraerMensaje("gmsgCampoRequerido", txtAGE_LUGAR_EXPEDICION_DOCUMENTO.ToolTip);
                //cldFECHA_NACIMIENTO.ImageUrl = this.BasePath + "/Images/bt-cal.gif";
                //clPasaporteExpedicion.ImageUrl = this.BasePath + "/Images/bt-cal.gif";
                //clPasaporteVencimiento.ImageUrl = this.BasePath + "/Images/bt-cal.gif";
            }
            MantenerEstadoVisualFormulario();
        }

        private void dplMET_ID_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (dplMET_ID.SelectedValue == Utilidad.Jurado_TipoFormacionArtistica.ToString())
            {
                lblAGE_OTRA_MINORIA.Enabled = true;
                txtAGE_OTRA_MINORIA.Enabled = true;
                txtAGE_OTRA_MINORIA.Text = "";
            }
            else
            {
                lblAGE_OTRA_MINORIA.Enabled = false;
                txtAGE_OTRA_MINORIA.Enabled = false;
                txtAGE_OTRA_MINORIA.Text = "";
            }
            lblAGE_OTRA_MINORIA.UpdateAfterCallBack = true;
            txtAGE_OTRA_MINORIA.UpdateAfterCallBack = true;
        }

        private void ddlPaisBasicos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlPaisBasicos.SelectedValue == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
            {
                zgBasicos.Enabled = true;
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = false;
                lblAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = false;
            }
            else
            {
                zgBasicos.Enabled = false;
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = true;
                lblAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = true;
            }
            txtAGE_OTRA_CIUDAD_NACIMIENTO.Text = "";
            txtAGE_OTRA_CIUDAD_NACIMIENTO.UpdateAfterCallBack = true;
            lblAGE_OTRA_CIUDAD_NACIMIENTO.UpdateAfterCallBack = true;
        }

        #endregion

        #region - Metodos Privados

        public void CargaDatos()
        {
            cldFECHA_NACIMIENTO.CargarControles();
            clPasaporteExpedicion.CargarControles();
            clPasaporteVencimiento.CargarControles();

            #region - Carga Info de Minorias Etnicas

            MinoriaEtnica objMinoria = new MinoriaEtnica(ConfigurationManager.AppSettings["Conn"]);
            MinoriaEtnicaData dtMinoria = objMinoria.BuscarMinoriaEtnica();
            DataView dvMinoria = new DataView(dtMinoria.Tables[0]);
            dplMET_ID.DataSource = dvMinoria;
            dplMET_ID.DataTextField = MinoriaEtnicaData.MET_MINORIA_ETNICA_FIELD;
            dplMET_ID.DataValueField = MinoriaEtnicaData.MET_ID_FIELD;
            dplMET_ID.DataBind();

            #endregion

            #region - Cargar Info de Paises

            BasZonasGeograficas objBR = new BasZonasGeograficas(ConfigurationManager.AppSettings["Conn"]);
            DataTable objData;
            objData = objBR.BuscarZonasPaises();
            DataView oView = new DataView(objData);
            ddlPaisBasicos.DataSource = oView;
            ddlPaisBasicos.DataValueField = "ZOP_ID";
            ddlPaisBasicos.DataTextField = "ZOP_NOMBRE";
            ddlPaisBasicos.DataBind();
            if (Identificador == 0)
                ddlPaisBasicos.SelectedValue = Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString();

            #endregion

            #region - Cargar Info de Tipos de Documentos de Identidad

            TipoDocumentoIdentidad objIdentidad = new TipoDocumentoIdentidad(ConfigurationManager.AppSettings["conn"]);
            TipoDocumentoIdentidadData dtIdentidad = objIdentidad.Buscar();
            ddlTipoDocumento.DataSource = dtIdentidad;
            ddlTipoDocumento.DataValueField = TipoDocumentoIdentidadData.DOC_ID_FIELD;
            ddlTipoDocumento.DataTextField = TipoDocumentoIdentidadData.DOC_NOMBRE_FIELD;
            ddlTipoDocumento.DataBind();

            #endregion

            #region - Acciones por Opcion

            //Pasaporte
            StringBuilder strPasaporte = new StringBuilder();
            strPasaporte.Append(rbPasaporte.ClientID + "_0,");
            strPasaporte.Append(lbPasaporteNumero.ClientID + ",");
            strPasaporte.Append(txtPasaporteNumero.ClientID + ",");
            strPasaporte.Append(lbPasaporteExpedicion.ClientID + ",");
            strPasaporte.Append(lbPasaporteVencimiento.ClientID + ",");
            strPasaporte.Append(clPasaporteVencimiento.ClientID + ",");
            strPasaporte.Append(clPasaporteExpedicion.ClientID);
            rbPasaporte.Attributes["OnClick"] = "return habilitarCamposSINO(" + strPasaporte.ToString() + "); links()";

            //Tarjeta Profesional			
            StringBuilder strTarjeta = new StringBuilder();
            strTarjeta.Append(opcAGE_TIENE_TARJETA_PROFECIONAL.ClientID + "_0,");
            strTarjeta.Append(txtAGE_ANO_EXPEDICION_TARJETA.ClientID + ",");
            strTarjeta.Append(txtAGE_NUMERO_TARJETA.ClientID + ",");
            strTarjeta.Append(lblAGE_NUMERO_TARJETA.ClientID + ",");
            strTarjeta.Append(lblAGE_ANO_EXPEDICION_TARJETA.ClientID);
            opcAGE_TIENE_TARJETA_PROFECIONAL.Attributes["OnClick"] = "return habilitarCamposSINO(" + strTarjeta.ToString() + ")";

            //Discapacidad Fisica
            StringBuilder strFisica = new StringBuilder();
            strFisica.Append(opcAGE_POSEE_DICAPACIDA_FISICA.ClientID + "_0,");
            strFisica.Append(txtAGE_OTRA_DISCAPACIDAD_FISICA.ClientID + ",");
            strFisica.Append(lblAGE_OTRA_DISCAPACIDAD_FISICA.ClientID);
            opcAGE_POSEE_DICAPACIDA_FISICA.Attributes["OnClick"] = "return habilitarCamposSINO(" + strFisica.ToString() + ")";

            //Minoria Etnica
            StringBuilder strMinoria = new StringBuilder();
            strMinoria.Append(opcAGE_PERTENECE_MINORIA_ETNICA.ClientID + "_0,");
            strMinoria.Append(lblMET_ID.ClientID + ",");
            strMinoria.Append(dplMET_ID.ClientID);
            opcAGE_PERTENECE_MINORIA_ETNICA.Attributes["OnClick"] = "DesHabilitaMinoriaEtnica(); return habilitarCamposSINO(" + strMinoria.ToString() + ")";

            #endregion
        }

        #endregion

        #region - Metodos Publicos

        public void CreaEntorno(decimal idAgente)
        {
            Agentes objAgentes = new Agentes(ConfigurationManager.AppSettings["Conn"]);
            dtAgentes = objAgentes.ConsultarAgentes(idAgente);
            if (dtAgentes != null)
            {
                if (blEncriptado)
                {
                    DataRow row = dtAgentes.Rows[0];

                    Utilidad.DesencriptarFila(ref row);
                    //objAgentes.DesencriptarInfoAgente(ref row);	
                }

                CreaEntorno(dtAgentes.Rows[0]);
            }
        }

        public void CreaEntorno(DataRow drAgente)
        {
            CargaDatos();
            
            Identificador = Convert.ToDecimal(drAgente[AgentesData.AGE_ID_FIELD]);
            Agentes objAgentes = new Agentes(ConfigurationManager.AppSettings["Conn"]);
            dtAgentes = objAgentes.ConsultarAgentes(Identificador);
            if (dtAgentes != null)
            {
                drAgente = dtAgentes.Rows[0];
                Utilidad.DesencriptarFila(ref drAgente);
                //objAgentes.DesencriptarInfoAgente(ref row);	


                //CreaEntorno(dtAgentes.Rows[0]);	
            }
            if (drAgente[AgentesData.AGE_USU_ID_FIELD] != DBNull.Value)
                UsuIDPropietario = Convert.ToDecimal(drAgente[AgentesData.AGE_USU_ID_FIELD]);

            this.EstadoRegistro = drAgente[AgentesData.AGE_ESTADO_FIELD] != DBNull.Value ? drAgente[AgentesData.AGE_ESTADO_FIELD].ToString() : EnumHelper.GetDescription(Utilidad.Estados.Inactivo);

            NombreAgente = drAgente[AgentesData.AGE_NOMBRES_APELLIDOS_FIELD].ToString();
            txtAGE_NOMBRES_APELLIDOS.Text = NombreAgente;

            txtAGE_SEUDONIMO.Text = drAgente[AgentesData.AGE_SEUDONIMO_FIELD].ToString();
            cboGENERO.SelectedValue = drAgente[AgentesData.AGE_GENERO_FIELD].ToString();
            cldFECHA_NACIMIENTO.FechaSeleccionada = Convert.ToDateTime(drAgente[AgentesData.AGE_FECHA_NACIMIENTO_FIELD].ToString());
            ddlPaisBasicos.ClearSelection();
            ddlPaisBasicos.SelectedValue = drAgente[AgentesData.ZOP_ID_FIELD].ToString();
            if (drAgente[AgentesData.ZOP_ID_FIELD].ToString() != Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
            {
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Text = drAgente[AgentesData.AGE_OTRA_CIUDAD_NACIMIENTO_FIELD].ToString();
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = true;
                lblAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = true;
                zgBasicos.Enabled = false;
            }
            else
            {
                zgBasicos.AsignarValores(drAgente[AgentesData.ZON_ID_FIELD].ToString());
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Text = "";
                txtAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = false;
                lblAGE_OTRA_CIUDAD_NACIMIENTO.Enabled = false;
                zgBasicos.Enabled = true;
            }
            ddlTipoDocumento.ClearSelection();
            ddlTipoDocumento.SelectedValue = drAgente[AgentesData.DOC_ID_FIELD].ToString();
            txtAGE_NUMERO_DOCUMENTO.Text = drAgente[AgentesData.AGE_NUMERO_DOCUMENTO_FIELD].ToString();
            txtAGE_LUGAR_EXPEDICION_DOCUMENTO.Text = drAgente[AgentesData.AGE_LUGAR_EXPEDICION_DOCUMENTO_FIELD].ToString();
            if (drAgente[AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD].ToString() == Utilidad.SI)
            {
                opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue = "1";
                txtAGE_NUMERO_TARJETA.Text = drAgente[AgentesData.AGE_NUMERO_TARJETA_FIELD].ToString();
                txtAGE_NUMERO_TARJETA.Enabled = true;
                lblAGE_NUMERO_TARJETA.Enabled = true;
                txtAGE_ANO_EXPEDICION_TARJETA.Text = drAgente[AgentesData.AGE_ANO_EXPEDICION_TARJETA_FIELD].ToString();
                txtAGE_ANO_EXPEDICION_TARJETA.Enabled = true;
                lblAGE_ANO_EXPEDICION_TARJETA.Enabled = true;
            }
            else
            {
                opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue = "0";
                txtAGE_NUMERO_TARJETA.Text = "";
                txtAGE_NUMERO_TARJETA.Enabled = false;
                lblAGE_NUMERO_TARJETA.Enabled = false;
                txtAGE_ANO_EXPEDICION_TARJETA.Text = "";
                txtAGE_ANO_EXPEDICION_TARJETA.Enabled = false;
                lblAGE_ANO_EXPEDICION_TARJETA.Enabled = false;

            }
            if (drAgente[AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD].ToString() == Utilidad.SI)
            {
                opcAGE_POSEE_DICAPACIDA_FISICA.SelectedValue = "1";
                txtAGE_OTRA_DISCAPACIDAD_FISICA.Text = drAgente[AgentesData.AGE_OTRA_DISCAPACIDAD_FISICA_FIELD].ToString();
                txtAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = true;
                lblAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = true;
            }
            else
            {
                opcAGE_POSEE_DICAPACIDA_FISICA.SelectedValue = "0";
                txtAGE_OTRA_DISCAPACIDAD_FISICA.Text = "";
                txtAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = false;
                lblAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = false;
            }

            if (drAgente[AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD].ToString() == Utilidad.SI)
            {
                opcAGE_PERTENECE_MINORIA_ETNICA.SelectedValue = "1";
                lblMET_ID.Enabled = true;
                dplMET_ID.Enabled = true;
                txtAGE_OTRA_MINORIA.Text = drAgente[AgentesData.AGE_OTRA_MINORIA_FIELD].ToString();
                if (txtAGE_OTRA_MINORIA.Text != "")
                {
                    lblAGE_OTRA_MINORIA.Enabled = true;
                    txtAGE_OTRA_MINORIA.Enabled = true;
                }
                dplMET_ID.SelectedValue = drAgente[AgentesData.MET_ID_FIELD].ToString();
            }
            else
            {
                opcAGE_PERTENECE_MINORIA_ETNICA.SelectedValue = "0";
                lblMET_ID.Enabled = false;
                dplMET_ID.Enabled = false;
                txtAGE_OTRA_MINORIA.Text = "";
                lblAGE_OTRA_MINORIA.Enabled = false;
                txtAGE_OTRA_MINORIA.Enabled = false;
            }
            lbFechaRegistro.Text = Convert.ToDateTime(drAgente[AgentesData.AGE_FECHA_DILIGENCIAMIENTO_FIELD]).ToString();
            rbPasaporte.SelectedValue = drAgente[AgentesData.AGE_TIENE_PASAPORTE_FIELD].ToString();
            if (rbPasaporte.SelectedValue == "1")
            {
                lbPasaporteNumero.Enabled = true;
                txtPasaporteNumero.Enabled = true;
                lbPasaporteExpedicion.Enabled = true;
                //clPasaporteExpedicion.Enabled = true;
                lbPasaporteVencimiento.Enabled = true;
                //clPasaporteVencimiento.Enabled = true;
                txtPasaporteNumero.Text = drAgente[AgentesData.AGE_NUMERO_PASAPORTE_FIELD].ToString();
                clPasaporteExpedicion.FechaSeleccionada =
                    Convert.ToDateTime(drAgente[AgentesData.AGE_FECHA_EXPEDICION_PASAPORTE_FIELD].ToString());
                clPasaporteVencimiento.FechaSeleccionada =
                    Convert.ToDateTime(drAgente[AgentesData.AGE_FECHA_VENCIMIENTO_PASAPORTE_FIELD].ToString());
            }
            else
            {
                lbPasaporteNumero.Enabled = false;
                txtPasaporteNumero.Enabled = false;
                lbPasaporteExpedicion.Enabled = false;
                //clPasaporteExpedicion.Enabled = false;
                lbPasaporteVencimiento.Enabled = false;
                //clPasaporteVencimiento.Enabled = false;
                txtPasaporteNumero.Text = "";
            }
        }

        public AgentesData ObtenerCambios()
        {
            dtAgentes.Rows[0][AgentesData.AGE_NOMBRES_APELLIDOS_FIELD] = txtAGE_NOMBRES_APELLIDOS.Text;

            if (!txtAGE_SEUDONIMO.Text.Equals(string.Empty))
                dtAgentes.Rows[0][AgentesData.AGE_SEUDONIMO_FIELD] = txtAGE_SEUDONIMO.Text;
            else
                dtAgentes.Rows[0][AgentesData.AGE_SEUDONIMO_FIELD] = System.DBNull.Value;

            dtAgentes.Rows[0][AgentesData.AGE_GENERO_FIELD] = cboGENERO.SelectedValue;
            dtAgentes.Rows[0][AgentesData.AGE_FECHA_NACIMIENTO_FIELD] = Convert.ToDateTime(cldFECHA_NACIMIENTO.FechaSeleccionada);
            dtAgentes.Rows[0][AgentesData.ZOP_ID_FIELD] = ddlPaisBasicos.SelectedValue;
            if (ddlPaisBasicos.SelectedValue.ToString() == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
                dtAgentes.Rows[0][AgentesData.ZON_ID_FIELD] = zgBasicos.MunicipioSeleccionado;
            else
                dtAgentes.Rows[0][AgentesData.AGE_OTRA_CIUDAD_NACIMIENTO_FIELD] = txtAGE_OTRA_CIUDAD_NACIMIENTO.Text;

            dtAgentes.Rows[0][AgentesData.DOC_ID_FIELD] = ddlTipoDocumento.SelectedValue;
            dtAgentes.Rows[0][AgentesData.AGE_NUMERO_DOCUMENTO_FIELD] = txtAGE_NUMERO_DOCUMENTO.Text;
            dtAgentes.Rows[0][AgentesData.AGE_LUGAR_EXPEDICION_DOCUMENTO_FIELD] = txtAGE_LUGAR_EXPEDICION_DOCUMENTO.Text;
            if (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedIndex == 1)
            {
                dtAgentes.Rows[0][AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.SI;
                dtAgentes.Rows[0][AgentesData.AGE_NUMERO_TARJETA_FIELD] = txtAGE_NUMERO_TARJETA.Text;
                dtAgentes.Rows[0][AgentesData.AGE_ANO_EXPEDICION_TARJETA_FIELD] = txtAGE_ANO_EXPEDICION_TARJETA.Text;
            }
            else
                dtAgentes.Rows[0][AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.NO;
            if (opcAGE_POSEE_DICAPACIDA_FISICA.SelectedIndex == 1)
            {
                dtAgentes.Rows[0][AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.SI;
                dtAgentes.Rows[0][AgentesData.AGE_OTRA_DISCAPACIDAD_FISICA_FIELD] = txtAGE_OTRA_DISCAPACIDAD_FISICA.Text;
            }
            else
                dtAgentes.Rows[0][AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.NO;
            if (opcAGE_PERTENECE_MINORIA_ETNICA.SelectedIndex == 1)
            {
                dtAgentes.Rows[0][AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.SI;
                dtAgentes.Rows[0][AgentesData.MET_ID_FIELD] = dplMET_ID.SelectedValue;

                if (!txtAGE_OTRA_MINORIA.Text.Equals(string.Empty))
                    dtAgentes.Rows[0][AgentesData.AGE_OTRA_MINORIA_FIELD] = txtAGE_OTRA_MINORIA.Text;
                else
                    dtAgentes.Rows[0][AgentesData.AGE_OTRA_MINORIA_FIELD] = System.DBNull.Value;
            }
            else
                dtAgentes.Rows[0][AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.NO;

            if (rbPasaporte.SelectedValue == "1")
            {
                dtAgentes.Rows[0][AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 1;
                dtAgentes.Rows[0][AgentesData.AGE_NUMERO_PASAPORTE_FIELD] = txtPasaporteNumero.Text;
                //clPasaporteExpedicion.SelectedDate = clPasaporteExpedicion.VisibleDate;
                //clPasaporteVencimiento.SelectedDate = clPasaporteVencimiento.VisibleDate;
                dtAgentes.Rows[0][AgentesData.AGE_FECHA_EXPEDICION_PASAPORTE_FIELD] = clPasaporteExpedicion.FechaSeleccionada;
                dtAgentes.Rows[0][AgentesData.AGE_FECHA_VENCIMIENTO_PASAPORTE_FIELD] = clPasaporteVencimiento.FechaSeleccionada;
            }
            else
                dtAgentes.Rows[0][AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 0;

            return dtAgentes;
        }

        public void ObtenerCambios(ref DataRow drAgente)
        {
            drAgente[AgentesData.AGE_NOMBRES_APELLIDOS_FIELD] = txtAGE_NOMBRES_APELLIDOS.Text;

            if (!txtAGE_SEUDONIMO.Text.Equals(string.Empty))
                drAgente[AgentesData.AGE_SEUDONIMO_FIELD] = txtAGE_SEUDONIMO.Text;
            else
                drAgente[AgentesData.AGE_SEUDONIMO_FIELD] = System.DBNull.Value;

            drAgente[AgentesData.AGE_GENERO_FIELD] = cboGENERO.SelectedValue;
            drAgente[AgentesData.AGE_FECHA_NACIMIENTO_FIELD] = Convert.ToDateTime(cldFECHA_NACIMIENTO.FechaSeleccionada);
            drAgente[AgentesData.ZOP_ID_FIELD] = ddlPaisBasicos.SelectedValue;
            if (ddlPaisBasicos.SelectedValue.ToString() == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
                drAgente[AgentesData.ZON_ID_FIELD] = zgBasicos.MunicipioSeleccionado;
            else
            {
                drAgente[AgentesData.AGE_OTRA_CIUDAD_NACIMIENTO_FIELD] = txtAGE_OTRA_CIUDAD_NACIMIENTO.Text;
            }

            drAgente[AgentesData.DOC_ID_FIELD] = ddlTipoDocumento.SelectedValue;
            drAgente[AgentesData.AGE_NUMERO_DOCUMENTO_FIELD] = txtAGE_NUMERO_DOCUMENTO.Text;
            drAgente[AgentesData.AGE_LUGAR_EXPEDICION_DOCUMENTO_FIELD] = txtAGE_LUGAR_EXPEDICION_DOCUMENTO.Text;
            if (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedIndex == 1)
            {
                drAgente[AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.SI;
                drAgente[AgentesData.AGE_NUMERO_TARJETA_FIELD] = txtAGE_NUMERO_TARJETA.Text;
                drAgente[AgentesData.AGE_ANO_EXPEDICION_TARJETA_FIELD] = txtAGE_ANO_EXPEDICION_TARJETA.Text;
            }
            else
            {
                drAgente[AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.NO;
            }

            if (opcAGE_POSEE_DICAPACIDA_FISICA.SelectedIndex == 1)
            {
                drAgente[AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.SI;
                drAgente[AgentesData.AGE_OTRA_DISCAPACIDAD_FISICA_FIELD] = txtAGE_OTRA_DISCAPACIDAD_FISICA.Text;
            }
            else
            {
                drAgente[AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.NO;
            }

            if (opcAGE_PERTENECE_MINORIA_ETNICA.SelectedIndex == 1)
            {
                drAgente[AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.SI;
                drAgente[AgentesData.MET_ID_FIELD] = dplMET_ID.SelectedValue;

                if (!txtAGE_OTRA_MINORIA.Text.Equals(string.Empty))
                    drAgente[AgentesData.AGE_OTRA_MINORIA_FIELD] = txtAGE_OTRA_MINORIA.Text;
                else
                    drAgente[AgentesData.AGE_OTRA_MINORIA_FIELD] = System.DBNull.Value;
            }
            else
            {
                drAgente[AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.NO;
            }

            if (rbPasaporte.SelectedValue == "1")
            {
                drAgente[AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 1;
                drAgente[AgentesData.AGE_NUMERO_PASAPORTE_FIELD] = txtPasaporteNumero.Text;
                //clPasaporteExpedicion.SelectedDate = clPasaporteExpedicion.VisibleDate;
                //clPasaporteVencimiento.SelectedDate = clPasaporteVencimiento.VisibleDate;
                drAgente[AgentesData.AGE_FECHA_EXPEDICION_PASAPORTE_FIELD] = clPasaporteExpedicion.FechaSeleccionada;
                drAgente[AgentesData.AGE_FECHA_VENCIMIENTO_PASAPORTE_FIELD] = clPasaporteVencimiento.FechaSeleccionada;
            }
            else
            {
                drAgente[AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 0;
            }
        }

        /// <summary>
        /// Solo para nuevos registros
        /// </summary>
        /// <returns></returns>
        public AgentesData ObtenerDatos()
        {
            AgentesData response = new AgentesData();
            DataRow row = response.NewRow();
            row[AgentesData.AGE_ID_FIELD] = Identificador;
            row[AgentesData.AGE_USU_ID_FIELD] = UsuIDPropietario;
            row[AgentesData.AGE_FECHA_DILIGENCIAMIENTO_FIELD] = Convert.ToDateTime(lbFechaRegistro.Text);
            row[AgentesData.AGE_NOMBRES_APELLIDOS_FIELD] = txtAGE_NOMBRES_APELLIDOS.Text;

            if (!txtAGE_SEUDONIMO.Text.Equals(string.Empty))
                row[AgentesData.AGE_SEUDONIMO_FIELD] = txtAGE_SEUDONIMO.Text;
            else
                row[AgentesData.AGE_SEUDONIMO_FIELD] = System.DBNull.Value;

            row[AgentesData.AGE_GENERO_FIELD] = cboGENERO.SelectedValue;
            row[AgentesData.AGE_FECHA_NACIMIENTO_FIELD] = Convert.ToDateTime(cldFECHA_NACIMIENTO.FechaSeleccionada);
            row[AgentesData.ZOP_ID_FIELD] = ddlPaisBasicos.SelectedValue;
            if (ddlPaisBasicos.SelectedValue.ToString() == Utilidad.CODIGO_IDENTIFICACION_COLOMBIA.ToString())
                row[AgentesData.ZON_ID_FIELD] = zgBasicos.MunicipioSeleccionado;
            else
                row[AgentesData.AGE_OTRA_CIUDAD_NACIMIENTO_FIELD] = txtAGE_OTRA_CIUDAD_NACIMIENTO.Text;

            row[AgentesData.DOC_ID_FIELD] = ddlTipoDocumento.SelectedValue;
            row[AgentesData.AGE_NUMERO_DOCUMENTO_FIELD] = txtAGE_NUMERO_DOCUMENTO.Text;
            row[AgentesData.AGE_LUGAR_EXPEDICION_DOCUMENTO_FIELD] = txtAGE_LUGAR_EXPEDICION_DOCUMENTO.Text;
            if (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedIndex == 1)
            {
                row[AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.SI;
                row[AgentesData.AGE_NUMERO_TARJETA_FIELD] = txtAGE_NUMERO_TARJETA.Text;
                row[AgentesData.AGE_ANO_EXPEDICION_TARJETA_FIELD] = txtAGE_ANO_EXPEDICION_TARJETA.Text;
            }
            else
                row[AgentesData.AGE_TIENE_TARJETA_PROFECIONAL_FIELD] = Utilidad.NO;
            if (opcAGE_POSEE_DICAPACIDA_FISICA.SelectedIndex == 1)
            {
                row[AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.SI;
                row[AgentesData.AGE_OTRA_DISCAPACIDAD_FISICA_FIELD] = txtAGE_OTRA_DISCAPACIDAD_FISICA.Text;
            }
            else
                row[AgentesData.AGE_POSEE_DICAPACIDA_FISICA_FIELD] = Utilidad.NO;
            if (opcAGE_PERTENECE_MINORIA_ETNICA.SelectedIndex == 1)
            {
                row[AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.SI;
                row[AgentesData.MET_ID_FIELD] = dplMET_ID.SelectedValue;

                if (txtAGE_OTRA_MINORIA.Text.Equals(string.Empty))
                    row[AgentesData.AGE_OTRA_MINORIA_FIELD] = txtAGE_OTRA_MINORIA.Text;
                else
                    row[AgentesData.AGE_OTRA_MINORIA_FIELD] = System.DBNull.Value;
            }
            else
                row[AgentesData.AGE_PERTENECE_MINORIA_ETNICA_FIELD] = Utilidad.NO;

            if (rbPasaporte.SelectedValue == "1")
            {
                row[AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 1;
                row[AgentesData.AGE_NUMERO_PASAPORTE_FIELD] = txtPasaporteNumero.Text;
                //clPasaporteExpedicion.SelectedDate = clPasaporteExpedicion.VisibleDate;
                //clPasaporteVencimiento.SelectedDate = clPasaporteVencimiento.VisibleDate;
                row[AgentesData.AGE_FECHA_EXPEDICION_PASAPORTE_FIELD] = clPasaporteExpedicion.FechaSeleccionada;
                row[AgentesData.AGE_FECHA_VENCIMIENTO_PASAPORTE_FIELD] = clPasaporteVencimiento.FechaSeleccionada;
            }
            else
                row[AgentesData.AGE_TIENE_PASAPORTE_FIELD] = 0;

            response.Rows.Add(row);
            return response;
        }

        public void InactivarCamposIdentificacion(int tipoDocumento, string numDocumento)
        {
            ddlTipoDocumento.SelectedValue = tipoDocumento.ToString();
            txtAGE_NUMERO_DOCUMENTO.Text = numDocumento.ToString();
            ddlTipoDocumento.Enabled = false;
            txtAGE_NUMERO_DOCUMENTO.Enabled = false;
        }

        #endregion

        private void MantenerEstadoVisualFormulario()
        {
            txtAGE_NUMERO_TARJETA.Enabled = (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue == "1");
            lblAGE_NUMERO_TARJETA.Enabled = (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue == "1");
            txtAGE_ANO_EXPEDICION_TARJETA.Enabled = (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue == "1");
            lblAGE_ANO_EXPEDICION_TARJETA.Enabled = (opcAGE_TIENE_TARJETA_PROFECIONAL.SelectedValue == "1");

            txtAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = (opcAGE_POSEE_DICAPACIDA_FISICA.SelectedValue == "1");
            lblAGE_OTRA_DISCAPACIDAD_FISICA.Enabled = (opcAGE_POSEE_DICAPACIDA_FISICA.SelectedValue == "1");

            lblMET_ID.Enabled = (opcAGE_PERTENECE_MINORIA_ETNICA.SelectedValue == "1");
            dplMET_ID.Enabled = (opcAGE_PERTENECE_MINORIA_ETNICA.SelectedValue == "1");

            lbPasaporteNumero.Enabled = (rbPasaporte.SelectedValue == "1");
            txtPasaporteNumero.Enabled = (rbPasaporte.SelectedValue == "1");
            lbPasaporteExpedicion.Enabled = (rbPasaporte.SelectedValue == "1");
            //clPasaporteExpedicion.Enabled = (rbPasaporte.SelectedValue == "1");
            lbPasaporteVencimiento.Enabled = (rbPasaporte.SelectedValue == "1");
            //clPasaporteVencimiento.Enabled = (rbPasaporte.SelectedValue == "1");
        }

        #region - Propiedades Publicas

        public decimal Identificador
        {
            get
            {
                if (ViewState["Identificador"] != null)
                    return ((decimal)ViewState["Identificador"]);
                else
                    return (0);
            }
            set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
        }

        public decimal UsuIDPropietario
        {
            get
            {
                if (ViewState["UsuIDPropietario"] != null)
                    return ((decimal)ViewState["UsuIDPropietario"]);
                else
                    return (0);
            }
            set { ViewState["UsuIDPropietario"] = decimal.Parse(value.ToString()); }
        }

        public string EstadoRegistro
        {
            get
            {
                if (ViewState["EstadoRegistro"] != null)
                    return (ViewState["EstadoRegistro"].ToString());
                else
                    return (string.Empty);
            }
            set
            {
                ViewState["EstadoRegistro"] = value;
            }
        }

        public AgentesData dtAgentes
        {
            get
            {
                AgentesData dtAgentesData = null;

                if (Cache[AgentesData.ART_AGENTES_TABLE + Session.SessionID] != null)
                {
                    dtAgentesData = (AgentesData)Cache[AgentesData.ART_AGENTES_TABLE + Session.SessionID];
                }
                return dtAgentesData;
            }
            set
            {
                if (value != null)
                {
                    Cache.Insert(AgentesData.ART_AGENTES_TABLE + Session.SessionID, value, null, DateTime.Now.AddMinutes(20),
                                 Cache.NoSlidingExpiration);
                }
            }
        }

        /// <summary>
        /// Guarda en ViewState el Nombre del Agente
        /// </summary>
        public string NombreAgente
        {
            get
            {
                if (ViewState["NombreAgente"] != null)
                    return ((string)ViewState["NombreAgente"]);
                else
                    return "";
            }
            set { ViewState["NombreAgente"] = value.ToString(); }
        }

        /// <summary>
        /// Asigna u Obtiene el texto del campo Nombre del agente
        /// </summary>
        public string NombreAgenteTextBox
        {
            get
            {
                return txtAGE_NOMBRES_APELLIDOS.Text;
            }
            set
            {
                txtAGE_NOMBRES_APELLIDOS.Text = value.ToString();
            }
        }

        /// <summary>
        /// Asigna u Obtiene el texto del campo Numero de Documento
        /// </summary>
        public string NumeroDocumento
        {
            get
            {
                return txtAGE_NUMERO_DOCUMENTO.Text;
            }
            set
            {
                txtAGE_NUMERO_DOCUMENTO.Text = value.ToString();
            }
        }

        /// <summary>
        /// Activa o Desactiva el campo Numero de Documento
        /// </summary>
        public bool NumeroDocumentoEnabled
        {
            set
            {
                txtAGE_NUMERO_DOCUMENTO.Enabled = value;
            }
        }

        /// <summary>
        /// Asigna u Obtiene el valor del Dropdown Tipo de Documento
        /// </summary>
        public string TipoDocumento
        {
            get
            {
                return ddlTipoDocumento.SelectedValue;
            }
            set
            {
                ddlTipoDocumento.SelectedValue = value.ToString();
            }
        }

        public string TipoDocumentoText
        {
            get
            {
                return ddlTipoDocumento.SelectedItem.Text;
            }
        }

        /// <summary>
        /// Activa o Desactiva el campo Numero de Documento
        /// </summary>
        public bool TipoDocumentoEnabled
        {
            set
            {
                ddlTipoDocumento.Enabled = value;
            }
        }

        /// <summary>
        /// Identifica si la informacion esta encriptada en la BD
        /// </summary>
        public bool blEncriptado
        {
            get
            {
                if (ViewState["blEncriptadoBa"] != null)
                    return (Convert.ToBoolean(ViewState["blEncriptadoBa"].ToString()));
                else
                    return false;
            }
            set { ViewState["blEncriptadoBa"] = value.ToString(); }
        }

        #endregion

        #region Web Form Designer generated code

        protected override void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {
            this.ddlPaisBasicos.SelectedIndexChanged += new System.EventHandler(this.ddlPaisBasicos_SelectedIndexChanged);
            this.dplMET_ID.SelectedIndexChanged += new System.EventHandler(this.dplMET_ID_SelectedIndexChanged);
            this.Load += new System.EventHandler(this.Page_Load);

        }

        #endregion
    }
}